﻿#pragma once
#include <d3d9.h>
#include "Trace.h"
#include <d3dx9.h>


enum SpriteEffect
{
	None,
	FlipVertically,
	FlipHorizontally,
	FLipVerticallyAndHorizontally
};


class CSprite {
protected:
	//Hỉnh ảnh bên gốc
	LPDIRECT3DTEXTURE9 mImage;
	LPD3DXSPRITE mSpriteHandler;

	//Vị trí sprite hiện tại trong mImage
	int mIndex;
	//Chiều rộng của 1 sprite
	int mWidth;	
	//Chiều cao của 1 sprite
	int mHeight;
	//Số sprite có trong mImage
	int mCount;	
	//Số sprite có trong một 
	int mSpritePerRow;
	//Tâm của sprite
	D3DXVECTOR2 mCentrer;
	//Hình chữ nhật bao quanh sprite
	RECT mspriteRect;


public:
	//Hàm khởi tạo
	CSprite(LPD3DXSPRITE spriteHandler, LPWSTR filePath, int spritePerRow, int countRow);

	//Sang sprite tiếp theo 
	void Next();

	//Trở về sprite đầu tiên
	void Reset(); 
	
	RECT GetBound();

	//Draw current sprite at location (X,Y) at the target surface
	void Draw(D3DXVECTOR2 position, SpriteEffect spriteEffect = SpriteEffect::None, D3DXVECTOR2 scale = D3DXVECTOR2(1, 1), D3DCOLOR color = NULL, float rotation = 0, float depth = 0);
	void Draw(LPDIRECT3DSURFACE9 target, D3DXVECTOR2 position, SpriteEffect spriteEffect = SpriteEffect::None, D3DXVECTOR2 scale = D3DXVECTOR2(1, 1), D3DCOLOR color = NULL, float rotation = 0, float depth = 0);
	~CSprite();
};


